/*
 * @Description: 银行账户类
 * @Author: rendc
 * @Date: 2025-07-28 09:12:00
 * @LastEditors: rendc
 * @LastEditTime: 2025-07-28 11:57:10
 */

// 基础类 银行账户
public class Account {
  // 成员变量 属性 数据成员
  // 卡号 - 封装：隐藏对象的属性
  private String id;
  // 卡的类型 - 封装：隐藏对象的属性
  private String type;
  // 余额
  private double balance;

  // 默认提供无参构造器 但是如果自定义任意构造器 那么无参构造器不提供
  // 无参构造器 构造方法
  public Account() {
    System.out.println("无参构造器");
  }

  // 单参构造器 id
  public Account(String id) {
    this.id = id;
    System.out.println("id - 单参构造器");
  }

  // // 单参构造器 type
  // public Account(String type) {
  // this.type = type;
  // System.out.println("type - 单参构造器");
  // }

  // 单参构造器 balance
  public Account(double balance) {
    this.balance = balance;
    System.out.println("balance - 单参构造器");
  }

  // 多参构造器 balance
  public Account(String type, double balance) {
    this.type = type;
    this.balance = balance;
    System.out.println("balance - 多参构造器");
  }

  // 全参构造器
  public Account(String id, String type, double balance) {
    // this.type = type;
    // this.balance = balance;
    // 调用自己已有的构造方法
    this(type, balance);
    this.id = id;
    System.out.println("balance - 全参构造器");
  }

  // 封装：提供公共的访问方式
  public String getId() {
    return id;
  }

  public void setId(String id) {
    this.id = id;
  }

  public double getBalance() {
    return balance;
  }

  public void setBalance(double newBalance) {
    balance = newBalance;
  }

  public String getType() {
    return type;
  }

  public void setType(String type) {
    this.type = type;
  }

  // display() toString() show()
  public void show() {
    System.out.println("银行账户，卡号：" + id + "，类型：" + type + "，余额：" + this.balance);
    // System.out.println("银行账户，卡号：" + this.getId() + "，余额：" + getBalance());
  }
}